//
//  AppDelegate.swift
//  微博09项目
//
//  Created by mac on 15/8/30.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit
import AFNetworking
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            
            //接收通知
            
            NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchRootViewController:", name: SXSwitchRootViewControllerNotification, object: nil)
            
            //打印用户信息
           // print(UserAccount.LoadUserAccount())
            print(UserAccountViewModel.shareUserAccount.userAccount)
            //设置全局外观
            setupAppearance()
            //设置网络指示器
            setNetwork()
            window = UIWindow(frame: UIScreen.mainScreen().bounds)
           // window?.rootViewController = SXMainViewController()
           // window?.rootViewController = SXNewFeatureController()
//            window?.rootViewController = SXWelcomeController()
            window?.rootViewController = defaultRootViewController()
           
            window?.makeKeyAndVisible()
            
            isNewVersion()
            return true
    }
    //启动默认根控制器
  private func defaultRootViewController() -> UIViewController{
        if UserAccountViewModel.shareUserAccount.userLogon {
            return isNewVersion() ? SXNewFeatureController() : SXWelcomeController()
        }
        return SXMainViewController()
    }
    
    //判断是不是最新版本
    private func isNewVersion() ->Bool {
        //打印当前的信息
        //  print(NSBundle.mainBundle().infoDictionary)
        
        //1.取出当前的版本号
        let bundleVerson = Double(NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String)!
//        print(bundleVerson)
       
        //2.取出原来的版本号
        let version = "com.itheima.weibo.version"//随机写的值
        let saxboxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(version)
       
        //3.保存之前的版本
        NSUserDefaults.standardUserDefaults().setDouble(bundleVerson, forKey: version)
        //判断两个版本号的大小
        return bundleVerson > saxboxVersion
    }
    //通知方法用private的时候：报unrecognized selector sent to instance 0x7ffa9b1102c0 错误
    //当我们吧private去掉的时候不会报错，但是有时候我们想我们的函数只在当前文件中使用，这个时候可以直接在前面加上一个@objc 就可以了
   @objc private func switchRootViewController(notification:NSNotification){
        // print(notification.object)
    window?.rootViewController = (notification.object == nil) ? SXMainViewController():SXWelcomeController()
    
    }
    //移除通知
    deinit{
        //注销指定名称的通知
        NSNotificationCenter.defaultCenter().removeObserver(self, name: SXSwitchRootViewControllerNotification, object: nil)
    }
    
/// 设置网络指示器
    private func setNetwork(){
/// 设置网络指示器，一旦设置，发起网络请求，会在状态栏显示菊花，指示器只负责AFN的网络请求，其他的网络框架不负责
        AFNetworkActivityIndicatorManager.sharedManager().enabled = true
        
/// 设置缓存请求数据
        // 设置缓存大小 NSURLCache －> GET 请求的数据会被缓存
        // 缓存的磁盘路径: /Library/Caches/(application bundle id)
        // MATTT，内存缓存是 4M，磁盘缓存是 20M
        // 提示：URLSession 只有 dataTask 会被缓存，downloadTask / uploadTask 都不会缓存
        let cache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
        NSURLCache.setSharedURLCache(cache)
    
    }
   /// 设置全局外观
    func setupAppearance(){
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        UITabBar.appearance().tintColor = UIColor.orangeColor()
    }
}

